草庐IT

leetcode 2746

全部标签

【LeetCode】203. 移除链表元素

leetcode链接203.移除链表元素#include#includestructListNode{ intval; structListNode*next;};typedefstructListNodeListNode;ListNode*RemoveElements1(ListNode*head,intval){ ListNode*cur=head; ListNode*prev=NULL; ListNode*next=NULL; while(cur){ next=cur->next;//下一个节点 if(cur->val==val){ free(cur);//1.删除 cur=

【leetcode】消失的数字

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️目录1.暴力求解法2.采用异或的方法(同单身狗问题)3.先求和再减去数组元素点击查看题目1.暴力求解法通过2个for循环,遍历查找0-n中缺少的数字,比较简单,不写,时间复杂度为O(N^2)2.采用异或的方法(同单身狗问题)点击去了解异或,位置在④.3异或:两个整数的相同位置:相同为0,不同为1(二进制),易知a^a=0,a^0=a;具有交换律,所以a^b^a=a^a^b=0^b=b。在本题中,先使x=0(因为0^任何数=任何数本身),再让x与0-n(n是数组的元素个数)的所有数字异或,再让x与num

Leetcode算法系列| 10. 正则表达式匹配

目录1.题目2.题解C#解法一:分段匹配法C#解法二:回溯法C#解法三:动态规划1.题目给你一个字符串s和一个字符规律p,请你来实现一个支持‘.’和‘*’的正则表达式匹配。1.‘.’匹配任意单个字符2.‘.’匹配任意单个字符所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例1:输入:s="aa",p="a"输出:false解释:"a"无法匹配"aa"整个字符串。示例2:输入:s="aa",p="a*"输出:true解释:因为'*'代表可以匹配零个或多个前面的那一个元素,在这里前面的元素就是'a'。因此,字符串"aa"可被视为'a'重复了一次。示例3:输入:s="ab",p=".*"输出:

leetcode链表小练(1.反转链表2.链表的中间节点3.合并两个有序链表4.环形链表①5.环形链表②)详解 (୨୧• ᴗ •͈)◞︎ᶫᵒᵛᵉ ♡

目录一.反转链表思路一反转指针反向:思路二头插法:二.链表的中间节点:三.合并两个有序数组:  思路一:从头开始,取两个链表中小的那个尾插到新链表。定义指针head,tail指向空,代表新链表的头结点。思路二:创建一个空的头指针(哨兵位),优化代码 : 四.环形链表①: 五.环形链表②:分享几个链表经典问题给大家,有不足的地方欢迎指出~感谢支持 づ♡ど 一.反转链表题目: 思路一反转指针反向:设置三个指针变量n1,n2,n3;分别指向NULL,第一个节点,第二个节点。将第n2的next指向n1,n1给n2,n2给n3,然后n3指向下一个节点,当n3=NULL是就不用在移动了,总的循环终止条件是

代码随想录算法训练营第七天 | LeetCode454 四数相加Ⅱ LeetCode383 赎金信 LeetCode15 三数之和 LeetCode18 四数之和

LeetCode454四数相加Ⅱ题目链接:四数相加Ⅱ文章链接:四数相加Ⅱ视频链接:四数相加Ⅱ思路因为C++还在学习中,还没到set和map这里,所以就先看视频了。不过这题肯定有暴力的解法,就是用四个for循环遍历所有的情况,用count记录,然后count++,最终返回count即可,但时间复杂度是n的四次方,不太建议这么做。--------------------------------------------------------以下是看完视频总结的思路--------------------------------------------------------大体的思路是这样的,四个

代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II

目录一、今日心得感悟    1、数组从小到大排序①冒泡法--时间复杂度:O(nlogn)②使用排序函数qsort--时间复杂度:O(nlogn)    ③两端->中间(双指针法) --时间复杂度:O(n)④归并排序(双指针法)--时间复杂度:O(n)    2、二维数组的访问及动态分配     3、时间复杂度        4、滑动窗口二、题目977.有序数组的平方        题目链接        想法        代码实现(未看视频/题解)        遇到的问题209.长度最小的子数组        题目链接        想法        代码实现(未看视频/题解)     

Leetcodes刷题之删除链表的倒数N个结点和删除链表的中间的结点

吾心信其可行,则移山填海之难,终有成功之日。              --孙中山目录🍉一.删除链表的倒数N个结点🌻1.双指针🍁2.求链表的长度🌸二.删除链表的中间的结点🍉一.删除链表的倒数N个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]做题链接🌻1.双指针这题我们同样使用双指针的方法,我们先定义一个fast指针和slow指针,它们都指向head。第一步:先判断fast为不为空,不为空,n就

leetcode刷题记录22(2023-09-11)【两数相除(二分、翻倍的思想) | 有效的数独(遍历) | 通配符匹配(动态规划、贪心) | 加一(进位、模拟)】

29.两数相除给你两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和取余运算。整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345将被截断为8,-2.7335将被截断至-2。返回被除数dividend除以除数divisor得到的商。注意:假设我们的环境只能存储32位有符号整数,其数值范围是[−231,231−1][−2^{31},2^{31}−1][−231,231−1]。本题中,如果商严格大于231−12^{31}−1231−1,则返回231−12^{31}−1231−1;如果商严格小于−231-2^{31}−231,则返回−

leetcode:136只出现一次的数字(详解),又名找到单身狗

期末考试临近,每天复习一点知识,还是可以复习完的,加油前言我后来才知道这是力扣上的一道题,我当时写他的时候名字叫找到单身狗,即使那个只出现了一次的数字题目136.只出现一次的数字给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。题目所谓单身狗问题翻译成数学问题就是在已知的一串数字,有一个数字只出现一次,其余的出现两次,现在你要找到是哪个数是单身狗解析一.一条单身狗我们要用到按位操作符首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制

【Leetcode】接雨水(双指针、单调栈)

目录💡题目描述💡双指针解法💡单调栈解法💡题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。提示:n==height.length10💡双指针解法思路:假设每个宽度为1的柱子那里有一个高度未知的宽度为1的水桶,这个水桶能接的水就是当前柱子所处位置能留下的雨水,而水桶的左边木板的高度取决于当前柱子左边所有的柱子中最高的那个柱子的高度,水桶右边木板的高度取决于当前柱子右边所有的柱子中最高的柱子的高度,而水桶左右木板中较小的那个木板的高度减去当前柱子的高度就是当前水桶能接到的水,也就是当前位置留下的雨水。classSolution{public: